package com.zm.blog.aop;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 登录验证注解<br>
 * 用于标记需要进行登录验证的方法，可指定访问所需的权限级别
 *
 * 使用示例：
 * {@code
 * @LoginCheck      // 默认需要管理员权限(2级)
 * public void adminOperation() {...}
 *
 * @LoginCheck(1)   // 需要普通用户权限
 * public void userOperation() {...}
 *
 * @LoginCheck(0)   // 不需要登录验证
 * public void publicOperation() {...}
 * }
 */
@Target(ElementType.METHOD)              // 指定该注解只能用于方法上
@Retention(RetentionPolicy.RUNTIME)      // 指定注解在运行时可通过反射获取
public @interface LoginCheck {

    /**
     * 权限级别配置
     *
     * 推荐权限级别定义：
     * 0 : 无需登录（公开访问）
     * 1 : 普通用户权限
     * 2 : 管理员权限（默认值）
     *
     * 实际使用中可根据业务需求扩展更多级别
     *
     * @return 访问该方法所需的最低权限级别
     */
    int value() default 2;  // 默认权限级别为2（管理员）

}
